package core;

import proxy.*;
/**
 * Thread responsavel por enviar Status ao Gerente. Ela envia em dois momomentos:
 * 1º: Apos um Manager acabar de calcula um job
 * 2º: Se o 1º nao ocorre antes de 5s.
 * Isto eh definido pela variavel wait(5000)
 * 
 * @author robertow
 *
 */
public class UpdateStatusManager extends Thread {
	
	// Cria um procurador
	private ManagerProxy managerProxy;
	
	// Cria um gerente de estado
	private StatusWorkerManager statusManager;
	
	private boolean running = true;

	public UpdateStatusManager(ManagerProxy managerProxy, StatusWorkerManager statusManager) {
		this.managerProxy = managerProxy;
		
		this.statusManager = statusManager;
	}

	public void run() {
		this.statusVerify();
	}

	public synchronized void statusVerify() {
		try {
			while (running) {
				this.managerProxy.statusSend(this.statusManager.getID(), this.statusManager.getCapacity(), this.statusManager.getWorkload());
				// //////////////////////////////////////////////////////////////////////
				//System.out.println("UpdateStatusManager (" + this.Manager.getID() + ") =>");
				//System.out.println("\t Enviar NODE_STATUS: ");
				//System.out.println("\t\t CAPACIDADE: " + this.Manager.getCapacity());
				//System.out.println("\t\t WORKLOAD: " + this.Manager.getWorkload() + "\n");
				// //////////////////////////////////////////////////////////////////////
				wait(5000);
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}
